Traditionally, programming of broadcast and cable television and radio, including content (i.e., the video or audio program) and (the placement of) ads in a video or audio signal stream, has followed a linear model. Programming may be linear in the sense that a program begins and is streamed and in progress when a user chooses to view entertainment content. FIG. 1 illustrates a conventional linear or video-on-demand (VOD) model for advertisement placement. Entertainment content 2, when processed as a digital data stream over a cable network, may be divided into a number of time intervals. The time intervals 4 include time reserved for a viewed program (content), such as “Golden Girls.” The intervals 6, 8, 9, represent sections of time reserved for advertisements or “avails.” These “avails” may be viewed as advertisement placement opportunities. As used herein, a “placement opportunity” was traditional called an avail and is sometimes referred to as a slot (into which a spot (e.g., an ad or content) is to be inserted). A placement opportunity (PO) is a construct that represents an opportunity to insert an advertisement or entertainment content, and defines the rules for that opportunity, such as its duration, interactivity, ownership, and technical constraints.
As used herein, the term “binding” refers to an identification of signals and content within a placement opportunity (PO). PO's are frequently created for broad amounts of content that are not yet published (i.e., any show on TNT network in the evening). When the show airs and a signal is detected, the signal is bound to the relevant PO's for that show.
As used herein, the term “impression” refers to a showing of an advertisement to a single viewer. For example, if a 30 second spot is placed in 50,000 video-on-demand (VOD) streams and it is known that 30,000 of the streams actually played the ad, then 30,000 impressions of that advertisement have been generated.
As used herein, a “status notification” may be, but is not limited to, an HTTP call from a VOD server with a unique ID that was created when a decision was delivered.
As used herein, the term “break” refers to all of the space in a stream between entertainment content. For example, a group of 4 consecutive 30 second spots between 2 segments of “Two and a Half Men” may be considered as a single break.
As used herein, an estimated starting location of a break in a signal stream is referred to as a signal point. In the context of advertisement placement, these signal points may be referred to as advertisement signal points.
In non-linear systems, such as Video-on-Demand (VOD), the intervals 6, 8, 9 may take on new meanings. The interval 6 is called a pre-roll, i.e., the space in a video that occurs immediately after a user clicks to start a VOD video. The interval 9 is known as a post-roll, i.e., the space after all of the VOD video segments have finished playing. The intervals 8 may be mid-rolls, i.e., mini-breaks in the middle of a VOD video, or may be interstitials, i.e., pod-like locations between consecutive VOD video segments. VOD advertisement placement opportunities may appear based on space, time, content, and user context and may be highly non-linear (i.e., the user chooses to initiate the playing of content and in response, the content starts). All of the intervals 6, 8, 9 in such play lists are ripe for the insertion of advertisements, i.e., advertisement placement opportunities.
FIG. 2 depicts a configuration of a conventional Internet-based cable television infrastructure 200 for performing advertising placement decisions in signal streams. On TV, the advertising network was formerly the national network, the cable network, or the cable operator. However, unlike the Internet, where browsers access/display content and then are separately “referred” to a shared advertisement network, the Internet-based cable television infrastructure 200 selects and assembles both the advertisement and the content together and delivers the combined result to customers' “smart appliances” 202a-202n (e.g., Internet ready televisions, radios, smartphones, tablets, PCs, etc.).
Recently, smart appliances 202a-202n, such as Internet-ready televisions, have become capable of receiving content from Internet streaming services, such as Netflix movies, Pandora streaming radio, etc., over WiFi or direct Ethernet connections. When a user clicks on an icon for an “app” that appears on the television set corresponding to one of these services, the content is streamed to the smart appliance 202a-202n from a content delivery network (CDN) 204 directly to the application running in the smart appliance 202a-202n without the need for a set top box.
A set top box may be configured to decode an analog representation of two states of a digital signal, as is known in the art, that is continuously streamed and pushed to the set top box through a broadcast facility over a coaxial or fiber optic cable and the set top box tunes to that channel and displays the content. When a user watches Internet-delivered program content, a browser within the smart appliance 202a-202n fetching video in predetermined time chunks—generally two sometimes three, sometimes ten second chunks. The fetched chunks of video are seamlessly stitched together dynamically in the application software of the smart appliance 202a-202n and then displayed so as to appear as a smooth video on the smart appliance 202a-202n. 
A Multiple System/Service Operator (MSO—a cable TV organization that owns more than one cable system and may provide broadband Internet service) may wish to rebroadcast video streams on smart appliances. Unfortunately, every connected device, including smart appliances, needs to obtain video in the format that it can consume. Apple, Microsoft, Adobe, etc., have very specific and incompatible formats. To overcome this problem, each of these companies has constructed facilities called content deliver networks (CDN) 204 where a “set top box” for each channel is configured to receive broadcasts from satellites. A signal received by a “set top box” from upstream devices 206 is fed to a transcoder 208 to place the signal in a desired format and to fragment the formatted signal into the predetermined (e.g., 2 second) segments of data. These segments are then stored at the CDN 204 on server farms located physically close to where the content is to be delivered.
To identify a particular channel data stream or “session”, including times when a program has ended and before the next program begins, i.e., a placement opportunity, a cue tone is inserted in the channel data stream a predetermined time before the next program begins. The cue tone may be an instance of an SCTE-35 packet. An observer 210, which may be the transcoder 208, informs placement opportunity information service (POIS) 211 of the arrival of the cue tone for subsequent placement of one or more advertisements into the channel data stream by an advertisement service (ADS) 212. If the ADS 212 is known to the POIS 211, then the POIS 211 notifies the ADS 212 of the cue tone notification. The advertisement service 212, in turn, is waiting for the subsequent arrival of requests from a CDN 204 to place advertisements into breaks (i.e. one or more of the segments) in the channel data stream (session).
MSOs, national and local networks prefer to know whether an ad has been played and watched by a subscriber. Equipment manufacturers have traditionally provided this feature in one of two ways: by building intelligence into each smart appliance (e.g., 202a), or by building intelligence into a reporting network, e.g., a cloud computing network, while not altering exiting smart appliances 202a-202n. Both techniques may employ what is known as a manifest file. As used herein, a manifest file, a manifest, or a session manifest, refers to a listing or index of what is contained in each of the segments of a session maintained by the CDN 204. More particularly, the session manifest may include a list of URLs which point to each of the segments or chunks and notes the type of segment: content or advertisement.
When intelligence is built into a smart appliance (e.g., 202a), the smart appliance 202a may (1) maintain a copy of the session manifest, (2) perform the function of splicing an ad into a placement opportunity (3) mark the session manifest for each segment played, and (4) report a proportion of a session (e.g., the number of segments) played to the MSO or network.
MSOs and networks, however, may prefer to employ any manufacturer's smart appliance (e.g., 202a). Both the MSOs and the networks have been moving toward providing their own viewing experience by providing only applications “apps” to a subscriber's equipment without altering the equipment.
When intelligence is built into the network, then reporting networks need to maintain a separate manifest for each viewer session. Conventionally, a manifest manipulator may be employed to provide manifests to smart appliances or MSOs. One deficiency of conventional manifest manipulators is that it may be necessary for a manifest manipulator to maintain a very large number of manifests which need to be updated periodically (e.g., 10-30 seconds) for each subscriber. For some MSOs, the number of smart appliances 202a-202n may be in the thousands to hundreds of thousands. In certain situations, some or all of the smart appliances 202a-202n may request manifests substantially simultaneously. Fortunately, alleviating factors include the number of people watching a given channel simultaneously and zoning.
The likelihood of 100,000 smart appliances 202a-202n all starting a VOD is very, very low, so the load for VOD advertising is rather smooth because not all the smart appliances 202a-202n are typically synchronized. Unfortunately, an MSO may need to render ad decisions for each active session during session startup when a viewer clicks a remote to watch the VOD, even if there may an ad that may be placed an hour and a half into a data stream corresponding to an active session. If a show transmitted on one channel is very popular, (e.g., the Super Bowl), the problem of handling thousands of manifests resurfaces.
To alleviate this problem, an MSO may divide a geographical area into a plurality of smaller geographical zones of service (e.g., 50 zones). A manifest manipulator may be placed in each of these zones to reduce the number of manifests that a manifest manipulator needs to manage. Under normal circumstances, an even smaller number of ad decisions need to be made per channel (e.g., 50).
Unfortunately, even for a small number of manifests to be handled per channel, there may be need to maintain multiple manifests for the same session. Manifests served to different smart appliances 202a-202n within a zone may become “unsynchronized.” As discussed above, a manifest, which represents a playlist, may comprise a list of URLs pointing to a predetermined number of segments of streaming data corresponding to a fixed time interval (e.g., fifteen (15), two (2) second “chunks” for a total of a 30 second manifest). Referring now to FIG. 3, a first manifest 302 representing a total of 30 second of advertising (ad1) may comprise, for example 15 URLs 304a-304o (URL1-URL15). In a particular zone, an MSO may swap the single 30 second ad (ad1) for two (2), 15 second ads as shown in a second manifest 306 (ad2, ad3). Because the segments 308a-308p (URL1-URL16) are aligned on two second boundaries, the number of URLs increases by one to sixteen (URL16). Over time, manifest alignment may drift when ads are continuously swapped to change the total length of time of an ad break in either a negative direction or a positive direction as represented by the manifest.
Therefore, there is a need to maintain the integrity of the numbering of URLs in a manifest, and it is necessary to determine where to swap URLs in and out of a manifest when the length of one or more ads changes. Conventional manifest manipulators alleviate this problem by maintaining an offset from an initial manifest provided by the transcoder 208 for each active session and for each channel. A separate thread of execution comprising a distinct instance of a manifest is created and maintained for each value of offset, for all active sessions, and for all active channels. Unfortunately, this may require processing power on the order of hundreds to thousands of threads of execution, translating to a need to maintain and operate a large number of multi-threaded computers. Accordingly, what would be desirable, but has not yet been provided, is a method and system for efficiently manipulating a session manifest when a length of an ad break pointed to by the manifest changes in length.